#ifndef __WxFreeTypeTextMapper2D_h
#define __WxFreeTypeTextMapper2D_h

#include "WxExtentionExports.h"
#include "mitkCommon.h"
#include <mitkMapper2D.h>
#include <vtkTextProperty.h>
#include "WxvtkFTGLChineseCharacterMapper.h"

namespace mitk {

	class BaseRenderer;
        class WxFreeTypeText;

        class WxExtention_EXPORT WxFreeTypeTextMapper2D :public Mapper2D
	{
	public:
                mitkClassMacro(WxFreeTypeTextMapper2D, Mapper2D);
		itkNewMacro(Self);
		/** @brief Get the PointDataList to map */
                virtual const WxFreeTypeText *GetInput(void);
		virtual void MitkRenderOpaqueGeometry(mitk::BaseRenderer* renderer);
		virtual void MitkRenderTranslucentGeometry(mitk::BaseRenderer* renderer);
		virtual void MitkRenderOverlay(mitk::BaseRenderer* renderer);
#if ( ( VTK_MAJOR_VERSION >= 5 ) && ( VTK_MINOR_VERSION>=2)  )
		void MitkRenderVolumetricGeometry(mitk::BaseRenderer* renderer);
#endif
		virtual vtkProp* GetProp(mitk::BaseRenderer* renderer)
		{
			return NULL;
		}
		int* GetSize() {return m_size;}
		virtual void ApplyProperties(mitk::BaseRenderer* renderer);
                static void SetDefaultProperties(mitk::DataNode* node, mitk::BaseRenderer* renderer = NULL, bool overwrite = false);
	protected:
                WxFreeTypeTextMapper2D(void);
                virtual ~WxFreeTypeTextMapper2D(void);
		
		typedef std::map<void*,vtkActor2D*> TextMapType;
		TextMapType m_TextCollection;

		std::string m_fontFileName;
		int m_fontSize; //m_shadowOffset;
		bool m_shadow;
		int m_size[2];
		float m_EffectiveDistance;
	};
} // namespace mitk
#endif
